package com.sky.mapper;

import com.github.pagehelper.Page;
import com.sky.annotation.AutoFill;
import com.sky.dto.OrdersPageQueryDTO;
import com.sky.entity.Orders;
import com.sky.enumeration.OperationType;
import org.apache.ibatis.annotations.Mapper;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface OrderMapper {
    /**
     * 插入订单数据
     * @param orders 订单数据
     */
    @AutoFill(OperationType.INSERT)
    void insert(Orders orders);

    /**
     * 根据订单状态与时间查询订单列表
     * @param status 订单状态
     * @param time 时间
     * @return 订单列表
     */
    List<Orders> selectByStatusAndOrderTimeLT(Integer status, LocalDateTime time);

    /**
     * 更新订单
     * @param orders 订单数据
     */
    @AutoFill(OperationType.UPDATE)
    void update(Orders orders);

    /**
     * 根据订单id查询订单
     * @param id 订单id
     * @return 订单数据
     */
    Orders selectById(Long id);

    /**
     * 根据条件查询营业额统计
     * @param map 查询条件
     * @return 营业额
     */
    Double sumByMap(Map<String, Object> map);

    /**
     * 根据条件查询订单统计
     *
     * @param map 查询条件
     * @return 订单数量
     */
    Integer countByMap(Map<String, Object> map);

    /**
     * 根据条件分页查询操作
     * @param ordersPageQueryDTO 查询条件
     * @return 分页结果
     */
    Page<Orders> selectPage(OrdersPageQueryDTO ordersPageQueryDTO);
}
